mod utils;

use wasm_bindgen::prelude::*;

//extern "C" 是一种外部函数调用约定，表示代码中引用的函数是用其他语言（如 C 或 JavaScript）编写的
#[wasm_bindgen]
extern "C" {
    fn alert(s: &str);
}

#[wasm_bindgen]
extern "C" {
    // 声明外部的console对象
    #[wasm_bindgen(js_namespace = console)]
    // 调用声明对象的log函数
    fn log(s: &str);
}

/*
也可以调用模块中的函数
// myModule.js
export function myFunction(s) {
    console.log(s);
}

#[wasm_bindgen(module = "/path/to/myModule.js")]
extern "C" {
    fn myFunction(s: &str);
}
*/

//该宏用于标记代码，告诉 wasm_bindgen 将下面的代码暴露给 JavaScript。
#[wasm_bindgen]
pub fn greet() {
    // 设置 panic hook，以便在发生 panic 时输出更详细的错误信息，可能生产不需要
    // utils::set_panic_hook(); 
    alert("Hello, hello-wasm!");
    log("Hello, hello-wasm!");
}
